#ifndef numuCCPXAnalysis_h
#define numuCCPXAnalysis_h

#include "numuCCAnalysis.hxx"
#include "numuCCPXSelection.hxx"


class numuCCPXAnalysis: public baseAnalysis {
public:
  numuCCPXAnalysis(AnalysisAlgorithm* ana=NULL);
  virtual ~numuCCPXAnalysis(){}

  //---- These are mandatory functions
  void DefineSelections();
  bool Process();
  void DefineMicroTrees(bool addBase=true);
  void FillMicroTrees(bool addBase=true);
  void FillToyVarsInMicroTrees(bool addBase=true);
  void InitializeConfiguration();
  void DefineConfigurations();
  void DefineCorrections();
  void DefineSystematics();
  void DefineTruthTree();
  void FillTruthTree(const AnaTrueVertex& vtx);
  bool CheckFillTruthTree(const AnaTrueVertex& vtx);
  bool CheckFillRooTracker(const AnaTrueVertex& vtx);
  void InitializeToy();
  void FinalizeToy();

protected:

  AnaBoxCCPX* _ccPX_box;

  AnaBoxCCPX& box(){return *_ccPX_box;}

  numuCCAnalysis* _numuCCAnalysis;

public:
  enum enumStandardMicroTrees_numuCCPXAnalysis{        
    selmu_truedir = numuCCAnalysis::enumStandardMicroTreesLast_numuCCAnalysis + 1,

    selp_pdg,               // true id
    selp_truemom,               // true proton momentum
    selp_truedir,  // true proton direction
    selp_mom,      
    selp_dir,
    selp_NDOF,      
    selp_Chi2,
    selp_endpos,
    selp_ntpcs,         
    selp_tpc_nhits       
  };
};

#endif
